package hut.game.actor;

import hut.game.table.BanCo;
import hut.game.table.NuocDi;
import hut.game.table.VanCo;
import hut.game.unit.Chot;
import hut.game.unit.Ma;
import hut.game.unit.Phao;
import hut.game.unit.QuanCo;
import hut.game.unit.Sy;
import hut.game.unit.Tinh;
import hut.game.unit.Xe;

import java.util.ArrayList;

public class Gen {

	public static ArrayList<NuocDi> listNextMove = new ArrayList<NuocDi>();

	public static ArrayList<NuocDi> SinhNuocDi() {
		listNextMove = new ArrayList<NuocDi>();
		if (VanCo.computer.Phe == VanCo.LuotDi){
			SinhNuocDiChoAI();
		}
		else{
			SinhNuocChoNguoiChoi();
		}
		return listNextMove;
	}
	
	//Sinh nuoc di dau tien cho AI
	public static ArrayList<NuocDi> SinhNuocDiDauChoAI(){
		Chot mChot = null;
		listNextMove.clear();
		for(int k = 0; k < VanCo.computer.dsQuanCo.size(); k++){
			if(VanCo.computer.dsQuanCo.get(k).TenQuanChuaLat.equals("chot")){
				mChot = new Chot();
				mChot.KhoiTao(VanCo.computer.dsQuanCo.get(k).Phe,
						VanCo.computer.dsQuanCo.get(k).Ten,
						VanCo.computer.dsQuanCo.get(k).ThuTu,
						VanCo.computer.dsQuanCo.get(k).TrangThai,
						VanCo.computer.dsQuanCo.get(k).Khoa,
						VanCo.computer.dsQuanCo.get(k).Hang,
						VanCo.computer.dsQuanCo.get(k).Cot);
				for(int i = 0; i <= 9 ; i++){
					for (int j = 0; j <= 8 ; j++) {
						KiemTraAI(i, j, VanCo.computer.dsQuanCo.get(k), mChot);
					}
				}
			}
		}
		return listNextMove;
	}

	// SinhNuocDiChoAI va SinhNuocChoNguoiChoi
	public static ArrayList<NuocDi> SinhNuocDiChoAI() {
		Sy mSy = null;
		Tinh mTinh =  null;
		Chot mChot = null;
		Xe mXe =  null;
		Phao mPhao = null;
		Ma mMa = null;
		listNextMove.clear();
		for (int k = 0; k < VanCo.computer.dsQuanCo.size(); k++) {
			if (VanCo.computer.dsQuanCo.get(k).TrangThai == 1) {
				for (int i = 0; i <= 9; i++) {
					for (int j = 0; j <= 8; j++) {
						KiemTraAI(i, j, VanCo.computer.dsQuanCo.get(k), null);
					}
				}
			}else if(VanCo.computer.dsQuanCo.get(k).TrangThai == 2){
				if (VanCo.computer.dsQuanCo.get(k).TenQuanChuaLat == "sy") {
					mSy = new Sy();
					mSy.KhoiTao(VanCo.computer.dsQuanCo.get(k).Phe,
							VanCo.computer.dsQuanCo.get(k).Ten,
							VanCo.computer.dsQuanCo.get(k).ThuTu,
							VanCo.computer.dsQuanCo.get(k).TrangThai,
							VanCo.computer.dsQuanCo.get(k).Khoa,
							VanCo.computer.dsQuanCo.get(k).Hang,
							VanCo.computer.dsQuanCo.get(k).Cot);
				}
				if (VanCo.computer.dsQuanCo.get(k).TenQuanChuaLat == "tinh") {
					mTinh = new Tinh();
					mTinh.KhoiTao(VanCo.computer.dsQuanCo.get(k).Phe,
							VanCo.computer.dsQuanCo.get(k).Ten,
							VanCo.computer.dsQuanCo.get(k).ThuTu,
							VanCo.computer.dsQuanCo.get(k).TrangThai,
							VanCo.computer.dsQuanCo.get(k).Khoa,
							VanCo.computer.dsQuanCo.get(k).Hang,
							VanCo.computer.dsQuanCo.get(k).Cot);
				}
				if (VanCo.computer.dsQuanCo.get(k).TenQuanChuaLat == "xe") {
					mXe = new Xe();
					mXe.KhoiTao(VanCo.computer.dsQuanCo.get(k).Phe,
							VanCo.computer.dsQuanCo.get(k).Ten,
							VanCo.computer.dsQuanCo.get(k).ThuTu,
							VanCo.computer.dsQuanCo.get(k).TrangThai,
							VanCo.computer.dsQuanCo.get(k).Khoa,
							VanCo.computer.dsQuanCo.get(k).Hang,
							VanCo.computer.dsQuanCo.get(k).Cot);
				}
				if (VanCo.computer.dsQuanCo.get(k).TenQuanChuaLat == "phao") {
					mPhao = new Phao();
					mPhao.KhoiTao(VanCo.computer.dsQuanCo.get(k).Phe,
							VanCo.computer.dsQuanCo.get(k).Ten,
							VanCo.computer.dsQuanCo.get(k).ThuTu,
							VanCo.computer.dsQuanCo.get(k).TrangThai,
							VanCo.computer.dsQuanCo.get(k).Khoa,
							VanCo.computer.dsQuanCo.get(k).Hang,
							VanCo.computer.dsQuanCo.get(k).Cot);
				}
				if (VanCo.computer.dsQuanCo.get(k).TenQuanChuaLat == "ma") {
					mMa = new Ma();
					mMa.KhoiTao(VanCo.computer.dsQuanCo.get(k).Phe,
							VanCo.computer.dsQuanCo.get(k).Ten,
							VanCo.computer.dsQuanCo.get(k).ThuTu,
							VanCo.computer.dsQuanCo.get(k).TrangThai,
							VanCo.computer.dsQuanCo.get(k).Khoa,
							VanCo.computer.dsQuanCo.get(k).Hang,
							VanCo.computer.dsQuanCo.get(k).Cot);
				}
				if (VanCo.computer.dsQuanCo.get(k).TenQuanChuaLat == "chot") {
					mChot = new Chot();
					mChot.KhoiTao(VanCo.computer.dsQuanCo.get(k).Phe,
							VanCo.computer.dsQuanCo.get(k).Ten,
							VanCo.computer.dsQuanCo.get(k).ThuTu,
							VanCo.computer.dsQuanCo.get(k).TrangThai,
							VanCo.computer.dsQuanCo.get(k).Khoa,
							VanCo.computer.dsQuanCo.get(k).Hang,
							VanCo.computer.dsQuanCo.get(k).Cot);
				}
				for (int i = 0; i <= 9; i++) {
					for (int j = 0; j <= 8; j++) {
						if (VanCo.computer.dsQuanCo.get(k).TenQuanChuaLat == "sy") {
							KiemTraAI(i, j, VanCo.computer.dsQuanCo.get(k), mSy);
						}
						if (VanCo.computer.dsQuanCo.get(k).TenQuanChuaLat == "tinh") {
							KiemTraAI(i, j, VanCo.computer.dsQuanCo.get(k), mTinh);
						}
						if (VanCo.computer.dsQuanCo.get(k).TenQuanChuaLat == "xe") {
							KiemTraAI(i, j, VanCo.computer.dsQuanCo.get(k), mXe);
						}
						if (VanCo.computer.dsQuanCo.get(k).TenQuanChuaLat == "phao") {
							KiemTraAI(i, j, VanCo.computer.dsQuanCo.get(k), mPhao);
						}
						if (VanCo.computer.dsQuanCo.get(k).TenQuanChuaLat == "ma") {
							KiemTraAI(i, j, VanCo.computer.dsQuanCo.get(k), mMa);
						}
						if (VanCo.computer.dsQuanCo.get(k).TenQuanChuaLat == "chot") {
							KiemTraAI(i, j, VanCo.computer.dsQuanCo.get(k), mChot);
						}
					}
				}
			}
		}
		return listNextMove;
	}

	public static ArrayList<NuocDi> SinhNuocChoNguoiChoi() {
		Sy mSy = null;
		Tinh mTinh =  null;
		Chot mChot = null;
		Xe mXe =  null;
		Phao mPhao = null;
		Ma mMa = null;
		listNextMove.clear();
		for (int k = 0; k < VanCo.n1.dsQuanCo.size(); k++) {
			if (VanCo.n1.dsQuanCo.get(k).TrangThai == 1) {
				for (int i = 0; i <= 9; i++) {
					for (int j = 0; j <= 8; j++) {
						KiemTra(i, j, VanCo.n1.dsQuanCo.get(k), null);
					}
				}
			} else if (VanCo.n1.dsQuanCo.get(k).TrangThai == 2) {
				if (VanCo.n1.dsQuanCo.get(k).TenQuanChuaLat == "sy") {
					mSy = new Sy();
					mSy.KhoiTao(VanCo.n1.dsQuanCo.get(k).Phe,
							VanCo.n1.dsQuanCo.get(k).Ten,
							VanCo.n1.dsQuanCo.get(k).ThuTu,
							VanCo.n1.dsQuanCo.get(k).TrangThai,
							VanCo.n1.dsQuanCo.get(k).Khoa,
							VanCo.n1.dsQuanCo.get(k).Hang,
							VanCo.n1.dsQuanCo.get(k).Cot);
				}
				if (VanCo.n1.dsQuanCo.get(k).TenQuanChuaLat == "tinh") {
					mTinh = new Tinh();
					mTinh.KhoiTao(VanCo.n1.dsQuanCo.get(k).Phe,
							VanCo.n1.dsQuanCo.get(k).Ten,
							VanCo.n1.dsQuanCo.get(k).ThuTu,
							VanCo.n1.dsQuanCo.get(k).TrangThai,
							VanCo.n1.dsQuanCo.get(k).Khoa,
							VanCo.n1.dsQuanCo.get(k).Hang,
							VanCo.n1.dsQuanCo.get(k).Cot);
				}
				if (VanCo.n1.dsQuanCo.get(k).TenQuanChuaLat == "xe") {
					mXe = new Xe();
					mXe.KhoiTao(VanCo.n1.dsQuanCo.get(k).Phe,
							VanCo.n1.dsQuanCo.get(k).Ten,
							VanCo.n1.dsQuanCo.get(k).ThuTu,
							VanCo.n1.dsQuanCo.get(k).TrangThai,
							VanCo.n1.dsQuanCo.get(k).Khoa,
							VanCo.n1.dsQuanCo.get(k).Hang,
							VanCo.n1.dsQuanCo.get(k).Cot);
				}
				if (VanCo.n1.dsQuanCo.get(k).TenQuanChuaLat == "phao") {
					mPhao = new Phao();
					mPhao.KhoiTao(VanCo.n1.dsQuanCo.get(k).Phe,
							VanCo.n1.dsQuanCo.get(k).Ten,
							VanCo.n1.dsQuanCo.get(k).ThuTu,
							VanCo.n1.dsQuanCo.get(k).TrangThai,
							VanCo.n1.dsQuanCo.get(k).Khoa,
							VanCo.n1.dsQuanCo.get(k).Hang,
							VanCo.n1.dsQuanCo.get(k).Cot);
				}
				if (VanCo.n1.dsQuanCo.get(k).TenQuanChuaLat == "ma") {
					mMa = new Ma();
					mMa.KhoiTao(VanCo.n1.dsQuanCo.get(k).Phe,
							VanCo.n1.dsQuanCo.get(k).Ten,
							VanCo.n1.dsQuanCo.get(k).ThuTu,
							VanCo.n1.dsQuanCo.get(k).TrangThai,
							VanCo.n1.dsQuanCo.get(k).Khoa,
							VanCo.n1.dsQuanCo.get(k).Hang,
							VanCo.n1.dsQuanCo.get(k).Cot);
				}
				if (VanCo.n1.dsQuanCo.get(k).TenQuanChuaLat == "chot") {
					mChot = new Chot();
					mChot.KhoiTao(VanCo.n1.dsQuanCo.get(k).Phe,
							VanCo.n1.dsQuanCo.get(k).Ten,
							VanCo.n1.dsQuanCo.get(k).ThuTu,
							VanCo.n1.dsQuanCo.get(k).TrangThai,
							VanCo.n1.dsQuanCo.get(k).Khoa,
							VanCo.n1.dsQuanCo.get(k).Hang,
							VanCo.n1.dsQuanCo.get(k).Cot);
				}
				for (int i = 0; i <= 9; i++) {
					for (int j = 0; j <= 8; j++) {
						if (VanCo.n1.dsQuanCo.get(k).TenQuanChuaLat == "sy") {
							KiemTra(i, j, VanCo.n1.dsQuanCo.get(k), mSy);
						}
						if (VanCo.n1.dsQuanCo.get(k).TenQuanChuaLat == "tinh") {
							KiemTra(i, j, VanCo.n1.dsQuanCo.get(k), mTinh);
						}
						if (VanCo.n1.dsQuanCo.get(k).TenQuanChuaLat == "xe") {
							KiemTra(i, j, VanCo.n1.dsQuanCo.get(k), mXe);
						}
						if (VanCo.n1.dsQuanCo.get(k).TenQuanChuaLat == "phao") {
							KiemTra(i, j, VanCo.n1.dsQuanCo.get(k), mPhao);
						}
						if (VanCo.n1.dsQuanCo.get(k).TenQuanChuaLat == "ma") {
							KiemTra(i, j, VanCo.n1.dsQuanCo.get(k), mMa);
						}
						if (VanCo.n1.dsQuanCo.get(k).TenQuanChuaLat == "chot") {
							KiemTra(i, j, VanCo.n1.dsQuanCo.get(k), mChot);
						}
					}
				}
			}
		}
		return listNextMove;
	}
	
	static void KiemTraAI(int i,int j, QuanCo q, QuanCo qcl){
		if(qcl == null){
			if (i != q.Hang	|| j != q.Cot) {
				if (q.KiemTra(i, j) == 1 && q.TuongAnToan(i, j) == 1) {
					NuocDi next = new NuocDi();
					next.Hang_Dau = q.Hang;
					next.Cot_Dau = q.Cot;
					next.Hang_Cuoi = i;
					next.Cot_Cuoi = j;
					next.Dau = q;
					if (BanCo.ViTri[next.Hang_Cuoi][next.Cot_Cuoi].Trong == false) {
						for (int l = 0; l < VanCo.n1.dsQuanCo.size(); l++) {
							if (BanCo.ViTri[next.Hang_Cuoi][next.Cot_Cuoi].Ten == VanCo.n1.dsQuanCo.get(l).Ten
									&& BanCo.ViTri[next.Hang_Cuoi][next.Cot_Cuoi].ThuTu == VanCo.n1.dsQuanCo.get(l).ThuTu) {
								next.Cuoi = VanCo.n1.dsQuanCo.get(l);
								break;
							}
						}
					} else {
						next.Cuoi = new QuanCo();
					}
					if (Gen.MakeMove(next))
						next.score = Eval.TinhTongDiemBanCo();
					else
						next.score = - Eval.TinhTongDiemBanCo();
					Gen.UnMakeMove(next);
					listNextMove.add(next);
				}
			}
		}else{
			if (i != q.Hang || j != q.Cot) {
				if (qcl.KiemTra(i, j) == 1 && qcl.TuongAnToan(i, j) == 1) {
					NuocDi next = new NuocDi();
					next.Hang_Dau = q.Hang;
					next.Cot_Dau = q.Cot;
					next.Hang_Cuoi = i;
					next.Cot_Cuoi = j;
					next.Dau = qcl;
					if (BanCo.ViTri[next.Hang_Cuoi][next.Cot_Cuoi].Trong == false) {
						for (int l = 0; l < VanCo.n1.dsQuanCo.size(); l++) {
							if (BanCo.ViTri[next.Hang_Cuoi][next.Cot_Cuoi].Ten == VanCo.n1.dsQuanCo.get(l).Ten
									&& BanCo.ViTri[next.Hang_Cuoi][next.Cot_Cuoi].ThuTu == VanCo.n1.dsQuanCo.get(l).ThuTu) {
								next.Cuoi = VanCo.n1.dsQuanCo.get(l);
								break;
							}
						}
					} else {
						next.Cuoi = new QuanCo();
					}
					if (Gen.MakeMove(next))
						next.score = Eval.TinhTongDiemBanCo();
					else
						next.score = -Eval.TinhTongDiemBanCo();
					Gen.UnMakeMove(next);
					listNextMove.add(next);
				}
			}
		}
		
	}

	static void KiemTra(int i, int j, QuanCo q, QuanCo qcl) {
		if (qcl == null) {
			if (i != q.Hang || j != q.Cot) {
				if (q.KiemTra(i, j) == 1 && q.TuongAnToan(i, j) == 1) {
					NuocDi next = new NuocDi();
					next.Hang_Dau = q.Hang;
					next.Cot_Dau = q.Cot;
					next.Hang_Cuoi = i;
					next.Cot_Cuoi = j;
					next.Dau = q;
					if (BanCo.ViTri[next.Hang_Cuoi][next.Cot_Cuoi].Trong == false) {
						for (int l = 0; l < VanCo.computer.dsQuanCo.size(); l++) {
							if (BanCo.ViTri[next.Hang_Cuoi][next.Cot_Cuoi].Ten == VanCo.computer.dsQuanCo.get(l).Ten
									&& BanCo.ViTri[next.Hang_Cuoi][next.Cot_Cuoi].ThuTu == VanCo.computer.dsQuanCo.get(l).ThuTu) {
								next.Cuoi = VanCo.computer.dsQuanCo.get(l);
								break;
							}
						}
					} else {
						next.Cuoi = new QuanCo();
					}
					if (Gen.MakeMove(next))
						next.score = Eval.TinhTongDiemBanCo();
					else
						next.score = Eval.TinhTongDiemBanCo();
					Gen.UnMakeMove(next);
					listNextMove.add(next);
				}
			}
		} else {
			if (i != q.Hang || j != q.Cot) {
				if (qcl.KiemTra(i, j) == 1 && qcl.TuongAnToan(i, j) == 1) {
					NuocDi next = new NuocDi();
					next.Hang_Dau = q.Hang;
					next.Cot_Dau = q.Cot;
					next.Hang_Cuoi = i;
					next.Cot_Cuoi = j;
					next.Dau = q;
					if (BanCo.ViTri[next.Hang_Cuoi][next.Cot_Cuoi].Trong == false) {
						for (int l = 0; l < VanCo.computer.dsQuanCo.size(); l++) {
							if (BanCo.ViTri[next.Hang_Cuoi][next.Cot_Cuoi].Ten == VanCo.computer.dsQuanCo
									.get(l).Ten
									&& BanCo.ViTri[next.Hang_Cuoi][next.Cot_Cuoi].ThuTu == VanCo.computer.dsQuanCo
											.get(l).ThuTu) {
								next.Cuoi = VanCo.computer.dsQuanCo.get(l);
								break;
							}
						}
					} else {
						next.Cuoi = new QuanCo();
					}
					if (Gen.MakeMove(next))
						next.score = Eval.TinhTongDiemBanCo();
					else
						next.score = Eval.TinhTongDiemBanCo();
					Gen.UnMakeMove(next);
					listNextMove.add(next);
				}
			}
		}

	}

	// MakeMove va UnMakeMove
	public static void UnMakeMove(NuocDi nuocDi) {
		VanCo.ply--;
		if (VanCo.LuotDi == 0)
			VanCo.LuotDi = 1;
		else
			VanCo.LuotDi = 0;
		BanCo.ViTri[nuocDi.Hang_Dau][nuocDi.Cot_Dau].Trong = false;
		BanCo.ViTri[nuocDi.Hang_Dau][nuocDi.Cot_Dau].Phe = nuocDi.Dau.Phe;
		BanCo.ViTri[nuocDi.Hang_Dau][nuocDi.Cot_Dau].Ten = nuocDi.Dau.Ten;
		BanCo.ViTri[nuocDi.Hang_Dau][nuocDi.Cot_Dau].ThuTu = nuocDi.Dau.ThuTu;
		if (VanCo.LuotDi == VanCo.computer.Phe) {
			for (int i = 0; i < VanCo.computer.dsQuanCo.size(); i++) {
				if (nuocDi.Dau.Ten == VanCo.computer.dsQuanCo.get(i).Ten
						&& nuocDi.Dau.ThuTu == VanCo.computer.dsQuanCo.get(i).ThuTu) {
					VanCo.computer.dsQuanCo.get(i).Hang = nuocDi.Hang_Dau;
					VanCo.computer.dsQuanCo.get(i).Cot = nuocDi.Cot_Dau;
					break;
				}
			}
			if (nuocDi.Cuoi.Ten != "") {
				BanCo.ViTri[nuocDi.Hang_Cuoi][nuocDi.Cot_Cuoi].Trong = false;
				BanCo.ViTri[nuocDi.Hang_Cuoi][nuocDi.Cot_Cuoi].Phe = nuocDi.Cuoi.Phe;
				BanCo.ViTri[nuocDi.Hang_Cuoi][nuocDi.Cot_Cuoi].Ten = nuocDi.Cuoi.Ten;
				BanCo.ViTri[nuocDi.Hang_Cuoi][nuocDi.Cot_Cuoi].ThuTu = nuocDi.Cuoi.ThuTu;
				for (int i = 0; i < VanCo.n1.dsQuanCo.size(); i++) {
					if (nuocDi.Cuoi.Ten == VanCo.n1.dsQuanCo.get(i).Ten
							&& nuocDi.Cuoi.ThuTu == VanCo.n1.dsQuanCo.get(i).ThuTu) {
						if(VanCo.n1.dsQuanCo.get(i).isFirst)
							VanCo.n1.dsQuanCo.get(i).TrangThai = 2;
						else
							VanCo.n1.dsQuanCo.get(i).TrangThai = 1;
						break;
					}
				}
			} else {
				VanCo.OCoTrong(nuocDi.Hang_Cuoi, nuocDi.Cot_Cuoi);
			}
		} else {

			for (int i = 0; i < VanCo.n1.dsQuanCo.size(); i++) {
				if (nuocDi.Dau.Ten == VanCo.n1.dsQuanCo.get(i).Ten
						&& nuocDi.Dau.ThuTu == VanCo.n1.dsQuanCo.get(i).ThuTu) {
					VanCo.n1.dsQuanCo.get(i).Hang = nuocDi.Hang_Dau;
					VanCo.n1.dsQuanCo.get(i).Cot = nuocDi.Cot_Dau;
					break;
				}
			}
			if (nuocDi.Cuoi.Ten != "") {
				BanCo.ViTri[nuocDi.Hang_Cuoi][nuocDi.Cot_Cuoi].Trong = false;
				BanCo.ViTri[nuocDi.Hang_Cuoi][nuocDi.Cot_Cuoi].Phe = nuocDi.Cuoi.Phe;
				BanCo.ViTri[nuocDi.Hang_Cuoi][nuocDi.Cot_Cuoi].Ten = nuocDi.Cuoi.Ten;
				BanCo.ViTri[nuocDi.Hang_Cuoi][nuocDi.Cot_Cuoi].ThuTu = nuocDi.Cuoi.ThuTu;
				for (int i = 0; i < VanCo.computer.dsQuanCo.size(); i++) {
					if (nuocDi.Cuoi.Ten == VanCo.computer.dsQuanCo.get(i).Ten
							&& nuocDi.Cuoi.ThuTu == VanCo.computer.dsQuanCo
									.get(i).ThuTu) {
						if(VanCo.computer.dsQuanCo.get(i).isFirst)
							VanCo.computer.dsQuanCo.get(i).TrangThai = 2;
						else
							VanCo.computer.dsQuanCo.get(i).TrangThai = 1;
						break;
					}
				}
			} else {
				VanCo.OCoTrong(nuocDi.Hang_Cuoi, nuocDi.Cot_Cuoi);
			}
		}
	}

	public static boolean MakeMove(NuocDi nuocDi) {
		VanCo.OCoTrong(nuocDi.Hang_Dau, nuocDi.Cot_Dau);
		BanCo.ViTri[nuocDi.Hang_Cuoi][nuocDi.Cot_Cuoi].Trong = false;
		BanCo.ViTri[nuocDi.Hang_Cuoi][nuocDi.Cot_Cuoi].Phe = nuocDi.Dau.Phe;
		BanCo.ViTri[nuocDi.Hang_Cuoi][nuocDi.Cot_Cuoi].Ten = nuocDi.Dau.Ten;
		BanCo.ViTri[nuocDi.Hang_Cuoi][nuocDi.Cot_Cuoi].ThuTu = nuocDi.Dau.ThuTu;
		if (VanCo.LuotDi == VanCo.computer.Phe) {
			for (int i = 0; i < VanCo.computer.dsQuanCo.size(); i++) {
				if (nuocDi.Dau.Ten == VanCo.computer.dsQuanCo.get(i).Ten
						&& nuocDi.Dau.ThuTu == VanCo.computer.dsQuanCo.get(i).ThuTu) {
					VanCo.computer.dsQuanCo.get(i).Hang = nuocDi.Hang_Cuoi;
					VanCo.computer.dsQuanCo.get(i).Cot = nuocDi.Cot_Cuoi;
					break;
				}
			}
			if (nuocDi.Cuoi.Ten != "") {
				for (int i = 0; i < VanCo.n1.dsQuanCo.size(); i++) {
					if (nuocDi.Cuoi.Ten == VanCo.n1.dsQuanCo.get(i).Ten
							&& nuocDi.Cuoi.ThuTu == VanCo.n1.dsQuanCo.get(i).ThuTu) {
						VanCo.n1.dsQuanCo.get(i).TrangThai = 0;
						break;
					}
				}
			}
		} else {
			for (int i = 0; i < VanCo.n1.dsQuanCo.size(); i++) {
				if (nuocDi.Dau.Ten == VanCo.n1.dsQuanCo.get(i).Ten
						&& nuocDi.Dau.ThuTu == VanCo.n1.dsQuanCo.get(i).ThuTu) {
					VanCo.n1.dsQuanCo.get(i).Hang = nuocDi.Hang_Cuoi;
					VanCo.n1.dsQuanCo.get(i).Cot = nuocDi.Cot_Cuoi;
					break;
				}
			}
			if (nuocDi.Cuoi.Ten != "") {
				for (int i = 0; i < VanCo.computer.dsQuanCo.size(); i++) {
					if (nuocDi.Cuoi.Ten == VanCo.computer.dsQuanCo.get(i).Ten
							&& nuocDi.Cuoi.ThuTu == VanCo.computer.dsQuanCo
									.get(i).ThuTu) {
						VanCo.computer.dsQuanCo.get(i).TrangThai = 0;
						break;
					}
				}
			}
		}
		boolean kill = false;
		if (VanCo.n1 != null && VanCo.computer != null) {
			if (VanCo.n1.qTuong.TrangThai == 0
					|| VanCo.computer.qTuong.TrangThai == 0)
				kill = true;
			else
				kill = false;
		}
		VanCo.ply++;
		if (VanCo.LuotDi == 0)
			VanCo.LuotDi = 1;
		else
			VanCo.LuotDi = 0;
		return kill;

	}

}
